﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VisaServices.Dominio;
using System.Data.SqlClient;

namespace VisaServices.Persistencia
{
    public class VisaDAO
    {
        public Visa Valida(Visa visaAValidar)
        {
            Visa visaBuscado = null;
            visaBuscado = Obtener(visaAValidar.NroTarjeta);

            decimal saldo = visaBuscado.Monto - visaAValidar.Monto;

            if (saldo < 0)
            {
                visaAValidar.Estado = "Rechazado";
            }else {
                string sql = "UPDATE VISA SET Monto=@monto WHERE NroTarjeta=@nrotarjeta";
                using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
                {
                    con.Open();
                    using (SqlCommand com = new SqlCommand(sql, con))
                    {
                        com.Parameters.Add(new SqlParameter("@monto", saldo));
                        com.Parameters.Add(new SqlParameter("@nrotarjeta", visaBuscado.NroTarjeta));
                        using (SqlDataReader resultado = com.ExecuteReader())
                        {
                        }
                    }
                }
                visaAValidar.Estado = "Validado";
            }
            return visaAValidar;
        }
        public Visa Obtener(string nrotarjeta)
        {
            Visa visaEncontrado = null;
            string sql = "select IdVisa,NroTarjeta,Monto from VISA where NroTarjeta=@nrotarjeta";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@nrotarjeta", nrotarjeta));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            visaEncontrado = new Visa()
                            {
                                IdVisa = (int)resultado["IdVisa"],
                                NroTarjeta = (string)resultado["NroTarjeta"],
                                Monto = (decimal)resultado["Monto"],
                                Estado="Validado"
                            };
                        }
                    }
                }
            }
            return visaEncontrado;
        }
    }
}
